重复:generateacoredumpinlinux我正在尝试在我的“FedoraCorerelease3(Heidelberg)”中创建核心转储。[root@testservertest_core_dump]#uname-aLinux测试服务器2.6.12-1.1381_FC3#1FriOct2103:46:55EDT2005i686athloni386GNU/Linux我正在关注this创建核心转储。问题是/proc/sys/kernel/suid_dumpable在这个版本中不存在。我也在这里检查过/proc/sys/fs/suid_dumpable,但是suid_dumpab
目前我正在为Arm9嵌入式应用程序开发两个驱动程序。它们都是i2c驱动程序,每个都使用一个IO扩展器pcf8575。我已经独立测试了驱动程序,但是当我将它们都编译到内核中并运行我的主应用程序时,我得到了下面的核心转储。它通常不会在第一次驱动程序访问期间发生。这似乎是随机发生的。当我的驱动程序调用i2c驱动程序在I2c总线上传输(i2c_master_send(client,&buff[0],count))时,它肯定会发生。我将附上我的两个驱动程序的主要文件。它们很相似,而且都非常简单。我已经独立地对它们进行了大量测试。通过在两个截然不同的硬件上获得相同的结果,我已经将此排除为硬件问题。
我使用DB2已经很多年了,但我只是继承了一个遗留应用程序,它通过JDBC读取/写入DB2,并且它在AS400上运行。我还没有关于平台或版本的很多细节,但我想知道通常是否可以将数据库的副本迁移到Windows或Linux版本的DB2?该应用程序通过非常慢的管道访问数据,我希望能够为本地开发剪切数据库的副本。使用的JDBC驱动程序是:com.ibm.as400.access.AS400JDBCDriver如果这有帮助...感谢任何/所有回复!更新:我刚刚发现DB2版本是7.1,平台是iSeries(我应该询问有关平台的更多详细信息吗?)~~干杯~~ 最佳答案
有没有可能让gdb自动找到对应的可执行文件?我提取了调试符号并将它们放在/usr/lib/debug/.build-id/目录中。当我使用gdb/usr/bin/executablecore启动gdb时,一切正常。可执行文件和所有共享库的所有调试符号都会自动加载,因为gdb知道构建ID并自动加载它。$gdb/usr/bin/executablecoreGNUgdb(GDB)7.0.1-debianCopyright(C)2009FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware
我正在编写一个用于核心转储分析的工具,我想打印的一件事是估计转储时进程使用了多少虚拟内存。这些核心转储可能是由于崩溃造成的,也可能是使用gcore手动获取的(例如,用于调整大小)。本质上,我想打印PSVSZ列的等效项。我研究了readelf和gdb,并专注于后者。例如,我有一个简单的程序挂起,我在PS中看到:$psauxwww|grepa.outUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot166440.00.04108472pts/5S+13:510:00./a.out我使用gcore获取一个核心,此时它使用4,206,592字节
我有一个C++程序的核心转储,它是使用GNU工具链构建和运行的。我可以复制可执行文件也许。如何按类名找到所有vtable指针的列表? 最佳答案 您可以在编译时使用-fdump-class-hierarchy获取虚表布局。这在检查对象时可能会有所帮助。您可能需要在gdb中setprintvtblon。 关于c++-我可以列出核心转储中的所有VTable指针吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
当我收到导致核心转储的信号时,我想运行我自己的处理程序以将siginfo_t和ucontext_t结构复制到全局变量,以便可以在核心转储中访问它们。目前在我的处理程序结束时,我重新分配默认处理程序并调用raise(thesig)。这样做的问题是核心转储“信息寄存器”显示了我的处理程序中寄存器的状态,而不是原始信号时的状态。我意识到,因为我已经保存了ucontext_t,所以我可以在其中查找原始寄存器值,但是当核心转储在团队中传递时,这些知识可能会丢失/忘记。所以我的问题是:有没有办法重新发出信号,并确保核心转储文件保存原始信号的寄存器状态?我想也许我可以使用一些内联汇编来手动恢复处理程
我为一个项目编写了自定义核心转储处理应用程序。我已更改'/proc/sys/kernel/core_pattern'以调用我的转储处理程序并成功调用它。现在的问题是将核心转储保存到gdb可以识别的文件中。目前我的转储处理程序从STDIN读取转储并将其保存到文件“core.dump”中。当我尝试将此核心转储加载到gdb时,出现错误:(gdb)...不是核心转储:无法识别文件格式当我在标准核心转储上运行"file"命令时,它会给我以下信息:核心:ELF64位LSB核心文件x86-64,版本1(SYSV),SVR4样式,来自“./dump_gen”对于自定义生成的转储,"file"给出以下内
我有一个非常复杂的跨平台应用程序。最近,我和我的团队一直在运行压力测试,遇到了几次崩溃(以及随之而来的核心转储)。其中一些核心转储非常精确,并向我展示了大约10个或更多堆栈帧发生崩溃的确切位置。其他人有时只有一个堆栈框架,带有??成为唯一的象征!我想知道的是:有没有办法增加核心转储指向正确方向的可能性?为什么报告的堆栈帧数量不一致?关于管理核心转储的任何最佳实践建议。以下是我编译二进制文件的方式(在Release模式下):编译器和平台:g++withglibc-2.3.2-95.50onCentOS3.6x86_64--这有助于我保持与旧版Linux的兼容性。所有文件都使用-g标志编译
获取单个表的数据、删除单个表或将整个转储文件分解为每个包含单个表的文件的最简单方法是什么?我通常最终会进行大量的vi正则表达式修改,但我敢打赌有更简单的方法可以使用awk/perl等来完成这些事情。Google结果的第一页带回了一堆无法运行的perl脚本。 最佳答案 当我需要从sql转储中提取单个表时,我会结合使用grep、head和tail。例如:grep-n"CREATETABLE"dump.sql然后这会为您提供每个表的行号,因此如果您的表在第200行,而下一个表在第269行,我会:head-n268dump.sql>toph